package com.frame.library.http;

import android.text.TextUtils;
import com.frame.library.db.DaoSupportFactory;
import com.frame.library.db.IDaoSupport;
import com.tom.baselibrary.MD5Utils;
import java.util.List;

// 代码优化：数据库查询，缓存数据 工具类
public class CacheDataUtil {

    // 获取缓存数据
    public static String getCacheResultJson(String finalUrl) {
        // 使用数据库查询：参数+路径 代表唯一标识。
        final IDaoSupport<CacheData> dataDaoSupport =
                DaoSupportFactory.getFactory().getDao(CacheData.class);
        List<CacheData> cacheDatas = dataDaoSupport
                .querySupport()
                .selection("mUrlKey = ?")
                .selectionArgs(MD5Utils.string2MD5(finalUrl)) // 不直接传url，使用md5修改一下。
                .query(); // 查询符合条件的 所有数据
        if (cacheDatas != null && cacheDatas.size() != 0) {
            CacheData cacheData = cacheDatas.get(0); // 拿集合中第0条数据 bean
            String resultJson = cacheData.getResultJson();
            if (!TextUtils.isEmpty(resultJson)) {
                // 1.1 需要缓存，且数据库有缓存, 立马直接执行显示数据
                return resultJson;
            }
        }
        return null;
    }

    // 缓存数据：根据最终的url，缓存返回的json数据
    public static long cacheData(String finalUrl, String resultJson) {
        final IDaoSupport<CacheData> dataDaoSupport =
                DaoSupportFactory.getFactory().getDao(CacheData.class);
        // 先删除原来的那条数据，再插入新的数据。
        dataDaoSupport.delete("mUrlKey = ?", MD5Utils.string2MD5(finalUrl));
        long number = dataDaoSupport.insert(new CacheData(MD5Utils.string2MD5(finalUrl), resultJson));
        return number;
    }

}
